﻿using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Drawing2D;
using ConfigurationSettings;

//This file contains the various color member variables and Public Properties in an attempt to
//   clean up the main class file.
namespace FileSystemControls
{
    public partial class FileSystemListView : System.Windows.Forms.ListView
    {
        #region ** Member Variables **

        #region ** Static Brushes **
        /// <summary>
        /// Static collection of brushes for painting the plain file items.
        /// </summary>
        List<LinearGradientBrush> _plainFilePaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the selected file items.
        /// </summary>
        List<LinearGradientBrush> _selectedFilePaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the mouseover file items.
        /// </summary>
        List<LinearGradientBrush> _mouseOverFilePaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the selected mouseover file items.
        /// </summary>
        List<LinearGradientBrush> _selectedMouseOverFilePaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the plain directory items.
        /// </summary>
        List<LinearGradientBrush> _plainDirectoryPaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the selected directory items.
        /// </summary>
        List<LinearGradientBrush> _selectedDirectoryPaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the mouseover directory items.
        /// </summary>
        List<LinearGradientBrush> _mouseOverDirectoryPaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the selected mouseover directory items.
        /// </summary>
        List<LinearGradientBrush> _selectedMouseOverDirectoryPaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the plain column headers.
        /// </summary>
        List<LinearGradientBrush> _plainColumnPaintBrushes;

        /// <summary>
        /// Static collection of brushes for painting the highlighted column headers.
        /// </summary>
        List<LinearGradientBrush> _highlightColumnPaintBrushes;

        /// <summary>
        /// Static brush for painting the plain item text.
        /// </summary>
        SolidBrush _plainFileFontBrush;

        /// <summary>
        /// Static brush for painting the selected item text.
        /// </summary>
        SolidBrush _selectedFileFontBrush;

        /// <summary>
        /// Static brush for painting the mouseover item text.
        /// </summary>
        SolidBrush _mouseOverFileFontBrush;

        /// <summary>
        /// Static brush for painting the selected mouseover item text.
        /// </summary>
        SolidBrush _selectedMouseOverFileFontBrush;

        /// <summary>
        /// Static brush for painting the plain directory text.
        /// </summary>
        SolidBrush _plainDirectoryFontBrush;

        /// <summary>
        /// Static brush for painting the selected directory text.
        /// </summary>
        SolidBrush _selectedDirectoryFontBrush;

        /// <summary>
        /// Static brush for painting the mouseover directory text.
        /// </summary>
        SolidBrush _mouseOverDirectoryFontBrush;

        /// <summary>
        /// Static brush for painting the selected mouseover directory text.
        /// </summary>
        SolidBrush _selectedMouseOverDirectoryFontBrush;

        #endregion

        #region ** Fonts **

        //Font _plainFileFont;
        //Color _plainFileForeColor = Color.FromKnownColor(KnownColor.ControlText);
        //Font _selectedFileFont;
        //Color _selectedFileForeColor = Color.FromKnownColor(KnownColor.ControlText);
        //Font _mouseOverFileFont;
        //Color _mouseOverFileForeColor = Color.FromKnownColor(KnownColor.ControlText);
        //Font _selectedMouseOverFileFont;
        //Color _selectedMouseOverFileForeColor = Color.FromKnownColor(KnownColor.ControlText);

        //Font _plainDirectoryFont;
        //Color _plainDirectoryForeColor = Color.FromKnownColor(KnownColor.ControlText);
        //Font _selectedDirectoryFont;
        //Color _selectedDirectoryForeColor = Color.FromKnownColor(KnownColor.ControlText);
        //Font _mouseOverDirectoryFont;
        //Color _mouseOverDirectoryForeColor = Color.FromKnownColor(KnownColor.ControlText);
        //Font _selectedMouseOverDirectoryFont;
        //Color _selectedMouseOverDirectoryForeColor = Color.FromKnownColor(KnownColor.ControlText);

        //Font _columnFont;
        //Color _columnForeColor = Color.FromKnownColor(KnownColor.ControlText);

        #endregion

        #region ** Color variables **

        Color _focusColor = Color.FromArgb(0x020, Color.Red);

        ItemSettings _fileSettings = new ItemSettings();

        ItemSettings _directorySettings = new ItemSettings();
 
        ColumnExtendedProperties _columnSettings = new ColumnExtendedProperties();

        #endregion

        #endregion

        #region ** Public Properties **

        #region ** Colors **

        /// <summary>
        /// Gets or sets the color used to indicate the control has focus.
        /// </summary>
        public Color FocusColor
        {
            get { return _focusColor; }
            set { _focusColor = value; }
        }

        [System.ComponentModel.Browsable(false), System.ComponentModel.ReadOnly(true)]
        public ItemSettings FileSettings
        {
            get
            {
                return _fileSettings;
            }

            set
            {
                _fileSettings = value;
            }
        }

        [System.ComponentModel.Browsable(false), System.ComponentModel.ReadOnly(true)]
        public ItemSettings DirectorySettings
        {
            get
            {
                return _directorySettings;
            }

            set
            {
                _directorySettings = value;
            }
        }


        [System.ComponentModel.Browsable(false), System.ComponentModel.ReadOnly(true)]
        public ColumnExtendedProperties ColumnSettings
        {
            get { return _columnSettings; }
            set { _columnSettings = value; }
        }

        #endregion

        #endregion
    }


}
